home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
Development
/
Feelin021015
/
Libs
/
Feelin
/
fcclib.a
< prev
next >
Wrap
Text File
|
2002-10-28
|
3KB
|
136 lines
INCLUDE 'exec/initializers.i'
INCLUDE 'exec/libraries.i'
INCLUDE 'exec/resident.i'
INCLUDE 'exec/alerts.i'
INCLUDE 'exec.i'
xref FCC_VERSION
xref FCC_REVISION
xref _FCC_Name
xref _FCC_ID
xref _FCC_Info
xdef ___base
SECTION 'text',CODE
;;Library Info
STRUCTURE FCCBase,LIB_SIZE
UBYTE fcc_Flags
UBYTE fcc_Reserved
ULONG fcc_Seglist
APTR fcc_SysBase
LABEL FCCBase_SIZE
MOVEQ #-1,D0
RTS
RomTag Dc.w RTC_MATCHWORD ; UWORD RT_MATCHWORD
Dc.l RomTag ; APTR RT_MATCHTAG
Dc.l EndCode ; APTR RT_ENDSKIP
Dc.b RTF_AUTOINIT ; UBYTE RT_FLAGS
Dc.b FCC_VERSION ; UBYTE RT_VERSION (defined in sample_rev.i)
Dc.b NT_LIBRARY ; UBYTE RT_TYPE
Dc.b 0 ; BYTE RT_PRI
Dc.l _FCC_Name ; APTR RT_NAME
Dc.l _FCC_ID ; APTR RT_IDSTRING
Dc.l InitTable ; APTR RT_INIT table for InitResident()
EndCode:
Even
InitTable Dc.l FCCBase_SIZE
Dc.l FuncTable
Dc.l DataTable
Dc.l LibInit
DataTable
INITBYTE LN_TYPE,NT_LIBRARY
INITLONG LN_NAME,_FCC_Name
INITBYTE LIB_FLAGS,LIBF_SUMUSED!LIBF_CHANGED
INITWORD LIB_VERSION,FCC_VERSION
INITWORD LIB_REVISION,FCC_REVISION
INITLONG LIB_IDSTRING,_FCC_ID
Dc.l 0
;*
;;Library Table
FuncTable
Dc.l LibOpen
Dc.l LibClose
Dc.l LibExpunge
Dc.l LibNull
Dc.l _FCC_Info
Dc.l -1
;*
;;LibInit (FCCBase,Seglist,ExecBase)(d0,a0,a6)
LibInit:
MOVE.L a5,-(sp)
MOVEA.L d0,a5 ; a5 = FCCBase
MOVE.L a0,(fcc_Seglist,a5)
MOVE.L a6,(fcc_SysBase,a5)
MOVE.L a5,d0
MOVEA.L (sp)+,a5
RTS
;*
;;LibOpen (FCCBase,Version)(a6,d0)
LibOpen:
ADDQ.W #1,(LIB_OPENCNT,a6)
BCLR #LIBB_DELEXP,(fcc_Flags,a6)
MOVE.L a6,d0
RTS
;*
;;LibClose (FCCBase)(a6)
LibClose:
MOVEQ #0,d0
SUBQ.W #1,(LIB_OPENCNT,a6)
BNE.B 1$
BTST #LIBB_DELEXP,(fcc_Flags,a6)
BEQ.B 1$
BSR LibExpunge
1$ RTS
;*
;;LibExpunge (FCCBase)(a6)
LibExpunge:
MOVEM.L d2/a5-a6,-(sp)
MOVEA.L a6,a5
MOVEA.L (fcc_SysBase,a5),a6
TST.W (LIB_OPENCNT,a5)
BEQ.B 1$
BSET #LIBB_DELEXP,(fcc_Flags,a5)
MOVEQ #0,d0
BRA.B .end
1$ MOVE.L (fcc_Seglist,a5),d2
MOVEA.L a5,a1
Call Remove
MOVEQ #0,d0
MOVEA.L a5,a1
MOVE.W (LIB_NEGSIZE,a5),d0
SUBA.L d0,a1
ADD.W (LIB_POSSIZE,a5),d0
Call FreeMem
MOVE.L d2,d0
.end MOVEM.L (sp)+,d2/a5-a6
RTS
;*
;;LibNull
LibNull:
MOVEQ #0,d0
RTS
;*
SECTION '__MERGED',DATA
___base Dc.l 0
END